import axios from 'axios'
import { complexDecrypt } from '../decrypt/decrypt'
// 创建 axios 实例
const apiClient = axios.create({
  baseURL: '/api',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})

// 请求拦截器
apiClient.interceptors.request.use(
  config => {
    // 在发送请求前做些什么，例如添加认证信息
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.Authorization = token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
apiClient.interceptors.response.use(
  async response => {
    try {
      // 解密数据并将其放回response对象中
      await complexDecrypt(response.data).then((res) => {
        response.data = JSON.parse(res)
      }).catch((e) => {
        console.log("解密过程中出现错误：" + e)
        return Promise.reject(e)
      })
      //response.data = JSON.parse(complexDecrypt(response.data))
      //console.log(response.data)
      return response
    } catch (e) {
      console.log("解密过程中出现错误：" + e)
      return Promise.reject(e)
    }

  },
  error => {
    // 对响应错误做点什么
    if (error.response) {
      console.log(error.response)
      // 处理未授权错误
      if (error.response.status === 401) {
        // 清除本地存储中的认证信息
        localStorage.removeItem('token')
        localStorage.removeItem('userId')
        localStorage.removeItem('userRole')
        // 跳转到登录页面
        // window.location.href = '/login'
      }
    }
    return Promise.reject(error)
  }
)

export default apiClient